// ...

#include <iostream>
#include <cstring>
using namespace std;

class Human {
	public:
		Human( int age=0, const char* name="wu ming" ) : m_age( age ), m_name( name ){
		
		}
		void getInfo( ) {
			cout << "age : " << m_age << endl;
			cout << "name : " << m_name << endl;
		}
	private:
		int m_age;
		string m_name;
};

class Student : public Human {
	public:
		Student( int age=0, const char* name="wu ming", float score=0.0, const char* remark="zan wu" ) :Human( age, name ), m_score(score), m_remark(remark) {
			// ...

		}
		void getInfo( ) {
			Human::getInfo( );
			cout << m_score << "\n" << m_remark << endl;
		}
		/*
		Student( ){
			[ Human(); ]
			[ float m_score; ]
			[ string m_remark; ]
		}
		*/
		~Student( ){
			
		}
		Student( const Student& that ) :Human( that ), m_score(that.m_score), m_remark(that.m_remark) {
			// ...

		}
		Student& operator=( const Student& that ) {
			Human& rh = *this;
			rh = that;

			m_score = that.m_score;
			m_remark = that.m_remark;

			return *this;
		}
	private:
		float m_score;
		string m_remark;
};

// designer
// ------------------------------------------------------------------
// user

int main( void ) { 
	Student s( 22, "zhangfei", 88.5, "lianghao" );
	s.getInfo( );

	cout << " " << endl;

	Student s2( s );
	s2.getInfo( );

	cout << " " << endl;

	Student s3;
	s3 = s2;
	s3.getInfo( );

	return 0;
}

